<?php

declare(strict_types=1);

namespace App\Service;

/**
 * 用户资料服务类
 * 用于取得用户较为静态的资料
 * 作者 薛原
 * 日期 2025-10-17
 */
use App\Exception\BusinessException;
use App\Repository\UserProfilesRepository;
use Hyperf\Di\Annotation\Inject;

class UserProfilesService
{
    #[Inject]
    private UserProfilesRepository $userProfilesRepository;

    /**
     * 补全用户资料
     * 该方法用于UserCreated事件处理回调
     * @param array $data
     */
    public function initUserProfiles(array $data)
    {
        $this->userProfilesRepository->create($data);
    }

    /**
     * 获取用户资料
     * @param $user_id
     * @return array|mixed|null
     */
    public function getUserProfiles($user_id)
    {
        return $this->userProfilesRepository->getDataById($user_id);
    }


    public function updateUserProfiles($data,$user_id)
    {
        $data = $data['profile'];
        $validator_result = \App\Lib\BaseValidator::make($data, [
            'bio' => 'string|max:2000',
            'website' => 'url|max:500',
            'location'=>'max:100',
            'company'=>'max:100'
        ],[
            'bio.max'=>'个人简介过长，不能超过2000字符',
            'website.url'=>'网站格式有误！',
            'website.max'=>'网站过长！',
            'location.max'=>'地区过长！',
            'company.max'=>'公司过长！'
        ]);
        if (!$validator_result) {
            throw new BusinessException(\App\Lib\BaseValidator::$error,0 );
        }
        $this->userProfilesRepository->updateData($data,$user_id);
    }

}